package org.opens.excel.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * @ExcelTarget注解属性说明
 * - value: 指定好id之后, 就可以在支持`name_id`这种格式的注解上使用
 */
@Data
@ExcelTarget(value = "studentEntity")
public class StudentEntity implements java.io.Serializable {

    /**
     * id
     */
    private String id;

    /**
     * 学生姓名
     * 说明:
     * - height: 控制行高, 作者说该属性之后会被废除
     * - name: 控制该列的header
     * - isImportField: 当导入对象的@ExcelTarget的value值为studentEntity表示是导入字段, 否则不是导入字段
     */
    @Excel(name = "学生姓名", height = 20, width = 30, isImportField = "true_studentEntity")
    @NotNull(message = "姓名不能为null")
    private String name;

    /**
     * 学生性别
     * 说明:
     * - replace: 将实体中的字段对应的值转换为对应的汉字, 此处sex=1的话则导出结果为`男`, 此处sex=2的话则导出结果为`女`;
     * 如果传入的值不能被转换, 则原样导出, 例如sex=3的话导出结果就是3
     * - suffix: 导出结果在replace的基础上添加对应的后缀.
     *
     */
    @Excel(name = "学生性别", replace = {"男_1", "女_2"}, suffix = "生", isImportField = "true_studentEntity,true_studentImportDTO")
    @NotNull(message = "性别不能为null")
    private Integer sex;

    /**
     * 出生日期
     * 说明:
     * - format: 导致导出的时间格式
     * - width: 控制导出字段的长度
     */
    @Excel(name = "出生日期", databaseFormat = "yyyyMMddHHmmss", format = "yyyy-MM-dd", isImportField = "true_studentEntity", width = 20)
    private Date birthday;

    @Excel(name = "进校日期", databaseFormat = "yyyyMMddHHmmss", format = "yyyy-MM-dd")
    private Date registrationDate;

}
